package com.ruoyi.web.service;


import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.sql.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;

@Service
public class C2ModuleToBeReleasedDetailService {

    @Autowired
    private DruidDataSource druidDataSource;

    public Map<String, List<Map<String, String>>> getModuleReleaseInfo() {
        // 获取当天的日期，作为查询条件
        String todayStart = LocalDate.now().atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        String todayEnd = LocalDate.now().plusDays(1).atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

        // 构造 SQL 查询语句，使用具体的日期值替代占位符
        String sql = "SELECT `versionName`, `moduleName`, `moduleVersionName`, `fullName` " +
                "FROM `module_release_info` " +
                "WHERE `status` = 1 " +
                "AND `modifyTime` >= '" + todayStart + "' " +
                "AND `modifyTime` < '" + todayEnd + "'";

        // 打印 SQL 查询语句
        System.out.println("Executing SQL: " + sql);
        System.out.println("Querying from: " + todayStart + " to " + todayEnd);

        // 用于存储最终返回的数据
        Map<String, List<Map<String, String>>> result = new HashMap<>();

        // 使用 Statement 执行查询，不使用占位符
        try (Connection conn = druidDataSource.getConnection();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery(sql)) {

            // 遍历结果集，将每一条记录按 versionName 分类
            while (rs.next()) {
                String versionName = rs.getString("versionName");
                String moduleName = rs.getString("moduleName");
                String moduleVersionName = rs.getString("moduleVersionName");
                String fullName = rs.getString("fullName");

                // 初始化 versionName 对应的模块列表
                result.putIfAbsent(versionName, new ArrayList<>());

                // 创建模块信息的 Map，并添加到 versionName 对应的列表中
                Map<String, String> moduleInfo = new HashMap<>();
                moduleInfo.put("moduleName", moduleName);
                moduleInfo.put("moduleVersionName", moduleVersionName);
                moduleInfo.put("fullName", fullName);

                result.get(versionName).add(moduleInfo);
            }
        } catch (SQLException e) {
            e.printStackTrace(); // 可以根据需要更改为日志记录
        }

        return result;
    }
}
